package infraestructura;

import java.util.ArrayList;
import java.util.List;
import modelo.Pedido;

public class PedidoMemoryPersistence implements PedidoPersistence {

    private List<Pedido> pedidos = new ArrayList();
    private static PedidoMemoryPersistence persistence = null;
    //@Abraham nombre bastante poco significativo…
    static int i = 0;
    
    private PedidoMemoryPersistence() {
    }
    
    public static PedidoPersistence getPersistenceManager() {
        if (persistence == null) {
            persistence = new PedidoMemoryPersistence();
        }
        return persistence;
    }

    @Override
    public List<Pedido> getALLThePedidos() {
        return pedidos;
    }
    
    @Override
    public boolean existsThePedido(int pedidoId) {
        for(Pedido pedido : pedidos) {
            if (pedido.getIdentificador() == pedidoId) {
                return true;
            }
        }
        return false;
    }

    @Override
    public Pedido getThePedido(int pedidoId) {
        for(Pedido pedido : pedidos) {
            if (pedido.getIdentificador() == pedidoId) {
                return pedido;
            }
        }
        throw new IllegalArgumentException("Este pedido no existe, debio comprobarse antes");
    }

    @Override
    public int add(Pedido pedido) {
        Pedido nuevoPedido = new Pedido(i, pedido.getUser(), pedido.getDate(), pedido.getLineasDelPedido());        
        pedidos.add(nuevoPedido);
        i++;
        return(nuevoPedido.getIdentificador());
    }
}